﻿using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;

namespace ClassTestWork1
{

    //Создать класс Human.
    //В классе определить поля - Имя, Фамилия, Дата рождения.
    //Имя и фамилия не могут быть null.
    //Дата рождения не может быть из будущего.
    //Реализовать свойства для установки и считывания значений полей.
    //Создать конструктор позволяющий установить значения полей класса
    //при создании.
    //Создать 2 экземпляра класса.
    //Вывести значение полей экземпляров на экран.


    class Human
    {
        private string firstName;
        private string lastName;
        private DateTime dayOfBirth;

        public Human(string firstName, string surname, DateTime birthday)
        {
            FirstName = firstName;
            LastName = surname;
            DayOfBirth = birthday;
        }

        public string FirstName
        {
            get { return firstName; }
            set
            {
                if(!String.IsNullOrWhiteSpace(value))
                    firstName = value;
                throw new ArgumentException("firstName is incorrect");
            }
        }

        public string LastName
        {
            get { return lastName; }
            set
            {
                if (value == null)
                    throw new NullReferenceException();
                lastName = value;
            }
        }

        public DateTime DayOfBirth
        {
            get { return dayOfBirth;}
            set
            {
                if(value > DateTime.Now)
                    throw new ArgumentException("Day Of Birth from future");
                dayOfBirth = value;
            }
        }

    }


    class Program
    {
        static void Main(string[] args)
        {
            
            Human human1 = new Human("Vasya", "Pupkin", new DateTime(2012, 12, 1));
            Human human2 = new Human("Maksim", "Evsukov", new DateTime(2012, 12, 1));

            Console.WriteLine("name: {0}, surname: {1}, Birthday: {2}",
                human1.FirstName, human1.LastName, human1.DayOfBirth);
            Console.WriteLine("name: {0}, surname: {1}, Birthday: {2}",
                human2.FirstName, human2.LastName, human2.DayOfBirth);

        }
    }
}
